1. Technical Field
This invention generally relates to computer systems, and more specifically relates to multiprocessor computer systems.
2. Background Art
Since the dawn of the computer age, computer systems have evolved into extremely sophisticated devices, and computer systems may be found in many different settings. Computer systems typically include a combination of hardware, such as semiconductors and circuit boards, and software, also known as computer programs. As advances in semiconductor processing and computer architecture push the performance of the computer hardware higher, more sophisticated computer software has evolved to take advantage of the higher performance of the hardware, resulting in computer systems today that are much more powerful than just a few years ago.
The performance of a computer system depends on many factors that are determined by hardware, software, and other dynamic considerations such as total number of programs being processed, network traffic load, cache efficiency, etc. One known way to increase the performance of the computer system is to provide multiple threads of execution that can process different portions of a computer program. Another known way to increase the performance of a computer system is to provide multiple processors that can share the processing load by executing portions of a computer program or separate computer programs in parallel. The concepts of multithreading and multiple processors can be combined to achieve further increases of performance. In the prior art, multiple processors were originally allowed to execute only one thread of execution at a time. However, more recent advances have allowed multiple threads of execution on each processor in a multiprocessor system. For example, the iSeries Condor computer system manufactured and sold by the IBM Corporation includes setup parameters that allow hardware multithreading to be enabled or disabled. When enabled, each processor can execute two threads. However, certain problems have arisen due to the presence of hardware multithreading.
Modem computer servers must typically support Java. One important benchmark that has been developed to measure how effectively a server supports Java is known as SPECJBB2000. SPEC is an acronym for Standard Performance Evaluation Corporation, which is a standards organization that has a mission to establish, maintain, and endorse a standardized set of relevant benchmarks and metrics for performance evaluation of modem computer systems. JBB2000 is an acronym for Java Business Benchmark, and is a benchmark that was made available in June of 2000. SPECJBB2000 has become very widely accepted in the industry as a desirable benchmark to meet. However, the enabling of hardware multithreading on systems that support it will usually cause the system to fail the SPECJBB2000 benchmark. The reason for the failure is that SPECJBB2000 has a specification of maximum variance between the execution time and transaction processing rate of different threads, commonly known in the industry as “thread spread”. If the execution time or transaction processing rate of different threads doing similar tasks exceeds the specified maximum thread spread, the benchmark fails. Most modem computer systems that include hardware multithreading fail executing the SPECJBB2000 benchmark due to excessive thread spread. As a result, most computer vendors turn off hardware multithreading when running the SPECJBB2000 benchmark. The cause of the excessive thread spread is the manner in which the operating system dispatches threads to available processors. Without an improved thread dispatch mechanism and method that reduces the thread spread, the computer industry will continue to suffer from computer systems that have excessive thread spread (and thus, cannot meet the SPECJBB2000 benchmark) unless hardware multithreading is disabled, which eliminates the performance advantage of providing hardware multithreading in the first place.